home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / Main.bin / CustomOverrideSupport.java < prev    next >
Text File  |  1998-09-23  |  4KB  |  118 lines

  1. package com.symantec.itools.vcafe.beans;
  2.  
  3. import java.io.Serializable;
  4. import java.io.ObjectOutputStream;
  5. import java.io.ObjectInputStream;
  6. import java.io.IOException;
  7.  
  8.  
  9. /**
  10.  * This is a utility class that can be used by customizers that implement
  11.  * it's own OK/Cancel buttons. You can use an instance of this class as a 
  12.  * member field of your bean and delegate various work to it.
  13.  */
  14.  
  15. public class CustomOverrideSupport implements java.io.Serializable {
  16.  
  17.     /**
  18.      * @param customizer  The customizer.
  19.      */
  20.  
  21.     public CustomOverrideSupport(Object customizer) {
  22.         this.customizer = customizer;
  23.     }
  24.  
  25.     /**
  26.      * Add a CustomOverrideListener to the listener list.
  27.      *
  28.      * @param listener  The CustomOverrideListener to be added
  29.      */
  30.  
  31.     public synchronized void addCustomOverrideListener(CustomOverrideListener listener) {
  32.         if (listeners == null) {
  33.             listeners = new java.util.Vector();
  34.         }
  35.         listeners.addElement(listener);
  36.     }
  37.  
  38.     /**
  39.      * Remove a CustomOverrideListener from the listener list.
  40.      *
  41.      * @param listener  The CustomOverrideListener to be removed
  42.      */
  43.  
  44.     public synchronized void removeCustomOverrideListener(CustomOverrideListener listener) {
  45.         if (listeners == null) {
  46.             return;
  47.         }
  48.         listeners.removeElement(listener);
  49.     }
  50.  
  51.     /**
  52.      * Report a bound property update to any registered listeners.
  53.      * No event is fired if old and new are equal and non-null.
  54.      *
  55.      * @param state  CustomOverrideEvent.CUSTOMIZER_OK or 
  56.      *      CustomOverrideEvent.CUSTOMIZER_CANCEL
  57.      */
  58.     public void fireCustomOverride(int state) {
  59.         java.util.Vector targets;
  60.         synchronized (this) {
  61.             if (listeners == null) {
  62.                 return;
  63.             }
  64.             targets = (java.util.Vector) listeners.clone();
  65.         }
  66.         CustomOverrideEvent evt = new CustomOverrideEvent(customizer, state);
  67.  
  68.         if (state == CustomOverrideEvent.CUSTOMIZER_OK) {
  69.             for (int i = 0; i < targets.size(); i++) {
  70.                 CustomOverrideListener target = (CustomOverrideListener)targets.elementAt(i);
  71.                 target.okPressed(evt);
  72.             }
  73.         } else if (state == CustomOverrideEvent.CUSTOMIZER_CANCEL) {
  74.             for (int i = 0; i < targets.size(); i++) {
  75.                 CustomOverrideListener target = (CustomOverrideListener)targets.elementAt(i);
  76.                 target.cancelPressed(evt);
  77.             }
  78.         }
  79.     }
  80.  
  81.  
  82.     private void writeObject(ObjectOutputStream s) throws IOException {
  83.         s.defaultWriteObject();
  84.  
  85.         java.util.Vector v = null;
  86.         synchronized (this) {
  87.             if (listeners != null) {
  88.                 v = (java.util.Vector) listeners.clone();
  89.             }
  90.         }
  91.  
  92.         if (v != null) {
  93.             for(int i = 0; i < v.size(); i++) {
  94.                 CustomOverrideListener l = (CustomOverrideListener)v.elementAt(i);
  95.                 if (l instanceof Serializable) {
  96.                     s.writeObject(l);
  97.                 }
  98.             }
  99.         }
  100.         s.writeObject(null);
  101.     }
  102.  
  103.  
  104.     private void readObject(ObjectInputStream s) throws ClassNotFoundException, IOException {
  105.         s.defaultReadObject();
  106.       
  107.         Object listenerOrNull;
  108.         while(null != (listenerOrNull = s.readObject())) {
  109.             addCustomOverrideListener((CustomOverrideListener)listenerOrNull);
  110.         }
  111.     }
  112.  
  113.     transient private java.util.Vector listeners;
  114.     private Object customizer;
  115.     private int customzierChangeSupportSerializedDataVersion = 1;
  116. }
  117.  
  118.